<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 普通定义  => 此时对象的属性可以正常的进行 取值 赋值  循环遍历  删除
    // var zhang = {
    //     name:"张三",
    //     age:18,
    //     height:"177cm",
    //     weight:"70kg",
    // }


    // 自定义对象的属性描述  => 可以实现对象的某个属性 只能取值不能赋值(只读)  对象遍历时无法枚举该属性  对象的属性不允许被删除 
    // 构造函数 Object的方法
    // Object.defineProperty(target, key,desc)    单个属性定义
    // target 目标对象
    // key    需要设置的属性名(键名)
    // desc   对象的属性描述(对象)
    //      value:     属性值
    //      writable:  是否是否可以改写(true(默认)/false)
    //      enumerable:  是否是否可以枚举(true(默认)/false)   => 遍历对象时,属性是否可以被列举出来
    //      configable   属性是否可以被重新配置/删除  (true(默认)/false

    // Object.defineProperties(target,options)    多个属性定义
    // target 目标对象
    // options 对象 => 定义对象的键名和描述 => {key:desc,key:desc} 

    // var zhang = {};

    // Object.defineProperty(zhang,"name",{
    //     value:"张三",
    //     writable:false,
    //     enumerable:false,
    //     configurable:false,
    // })

    // Object.defineProperty(zhang,"age",{
    //     value:18,
    //     writable:true,
    //     enumerable:true,
    //     configurable:true,
    // })

    // Object.defineProperty(zhang,"height",{
    //     value:"177cm",
    //     writable:true,
    //     enumerable:true,
    //     configurable:true,
    // })

    // Object.defineProperty(zhang,"weight",{
    //     value:"70kg",
    //     writable:true,
    //     enumerable:true,
    //     configurable:true,
    // })


    var zhang = {};

    Object.defineProperties(zhang,{
        // 对象的键名 是字符串类型
        name:{
            value:"张三",
            writable:false,
            enumerable:false,
            configurable:false,
        },
        age:{
            value:18,
            writable:false,
            enumerable:false,
            configurable:false,
        },
        height:{
            value:"182cm",
            writable:false,
            enumerable:false,
            configurable:false,
        },
        weight:{
            value:"75kg",
            writable:false,
            enumerable:false,
            configurable:false,
        }
    })

    console.log(zhang);

    // zhang.name = "李四";
    // console.log(zhang);

    // for(var key in zhang){
    //     console.log(key,zhang[key]);
    // }

    console.log(delete zhang.name);
    console.log(zhang);


    
    


</script>
</html>